Emmanuele Bassi [Wed, 16 Dec 2020 15:49:27 +0000 (15:49 +0000)]
docs: Add missing documentation to GtkStatusbar
Emmanuele Bassi [Wed, 16 Dec 2020 15:47:29 +0000 (15:47 +0000)]
docs: Add missing stanzas for gtk_test_accessible API
Emmanuele Bassi [Wed, 16 Dec 2020 15:32:55 +0000 (15:32 +0000)]
docs: Ignore gtksorterprivate.h
Emmanuele Bassi [Wed, 16 Dec 2020 15:32:32 +0000 (15:32 +0000)]
docs: Add missing documentation to GtkPopover
Emmanuele Bassi [Wed, 16 Dec 2020 15:29:41 +0000 (15:29 +0000)]
docs: Fix documentation of GtkGestureStylus
Document all the signals, and fix the syntax for boolean values.
Emmanuele Bassi [Wed, 16 Dec 2020 15:29:24 +0000 (15:29 +0000)]
docs: Add gtk-doc stanza for GtkExpander::activate
Emmanuele Bassi [Wed, 16 Dec 2020 15:29:10 +0000 (15:29 +0000)]
docs: Fix syntax of GtkEntry::activate signal
Emmanuele Bassi [Wed, 16 Dec 2020 15:28:57 +0000 (15:28 +0000)]
docs: Remove private symbols
Emmanuele Bassi [Wed, 16 Dec 2020 15:17:13 +0000 (15:17 +0000)]
docs: Ignore gtkpasswordentryprivate.h
Emmanuele Bassi [Wed, 16 Dec 2020 15:16:51 +0000 (15:16 +0000)]
docs: Add missing documentation for GtkTextCharPredicate
Emmanuele Bassi [Wed, 16 Dec 2020 15:16:20 +0000 (15:16 +0000)]
docs: Add missing documentation GtkNative
Emmanuele Bassi [Wed, 16 Dec 2020 15:15:58 +0000 (15:15 +0000)]
docs: Add missing documentation for GtkCellRenderer
Emmanuele Bassi [Wed, 16 Dec 2020 14:54:51 +0000 (14:54 +0000)]
docs: Complete symbol coverage for GSK
100% symbol docs coverage.
241 symbols documented.
0 symbols incomplete.
0 not documented.
Emmanuele Bassi [Wed, 16 Dec 2020 14:40:12 +0000 (14:40 +0000)]
docs: Complete symbol coverage for GDK
100% symbol docs coverage.
833 symbols documented.
0 symbols incomplete.
0 not documented.
What's left are just type system macros and windowing system opaque
structures.
Matthias Clasen [Wed, 16 Dec 2020 16:02:00 +0000 (16:02 +0000)]
Merge branch 'wip/toplevel-layout-intent' into 'master'
Fix toplevel layout state communication
Closes #3466
See merge request GNOME/gtk!2958
Jonas Ådahl [Wed, 16 Dec 2020 10:53:19 +0000 (11:53 +0100)]
gdk/toplevellayout: Change API to be about intent, not full state
When being fullscreen, and wanting to unfullscreen but not caring about
whether to go unmaximized or maximized (as this information is lost), if
the GdkToplevelLayout represents the full intended state, we won't be
able to do the right thing.
To avoid this issue, make the GdkToplevelLayout API intend based, where
if one e.g. doesn't call gdk_toplevel_set_maximized() with anything, the
backend will not attempt to change the maximized state.
This means we can also remove the old 'initially_maximized' and
'initially_fullscreen' fields from the private GtkWindow struct, as we
only deal with intents now.
Jonas Ådahl [Wed, 16 Dec 2020 09:10:00 +0000 (10:10 +0100)]
gtk/window: Check widget mappdness and not surface mappedness
When deciding whether to call gdk_toplevel_present(), check the
mappedness of GtkWidget instead of the mapped-ness of GdkSurface, as the
latter is mapped asynchronously, while the former is direct state of the
GtkWindow itself.
This fixes an issue where calling e.g. gtk_window_maximize() shortly
after showing it didn't take effect, as hadn't been mapped yet. While
maximizing after showing is racy, and will likely glitch from time to
time, the correct thing to do is still to maximize and handle whatever
state the compositor configured the window to be in.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3466
Matthias Clasen [Tue, 15 Dec 2020 20:33:01 +0000 (20:33 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
See merge request GNOME/gtk!2957
Matthias Clasen [Tue, 15 Dec 2020 19:18:26 +0000 (14:18 -0500)]
Add a doc comment for GskConicGradientNode
Matthias Clasen [Tue, 15 Dec 2020 19:14:49 +0000 (14:14 -0500)]
Add a doc comment for gdk_surface_request_layout
Emmanuele Bassi [Tue, 15 Dec 2020 16:54:59 +0000 (16:54 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Clean up the build system
See merge request GNOME/gtk!2955
Matthias Clasen [Tue, 15 Dec 2020 16:23:15 +0000 (16:23 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Update the node format docs
See merge request GNOME/gtk!2956
Emmanuele Bassi [Tue, 15 Dec 2020 16:21:20 +0000 (16:21 +0000)]
docs: Add public symbols to the GTK reference
Emmanuele Bassi [Tue, 15 Dec 2020 16:20:21 +0000 (16:20 +0000)]
Hide GtkTextAttributes functions
The type is private, so making functions operating on it public is
pointless.
Emmanuele Bassi [Tue, 15 Dec 2020 15:55:15 +0000 (15:55 +0000)]
Remove boxed type for GtkCrossingData
The GtkCrossingData type is completely private, so there's no point in
having a boxed type for it.
Emmanuele Bassi [Tue, 15 Dec 2020 14:07:11 +0000 (14:07 +0000)]
docs: Add more private headers
Matthias Clasen [Tue, 15 Dec 2020 15:30:18 +0000 (10:30 -0500)]
Update the node format docs
Update this document to mention all the render nodes we
have, and the default values for their properties.
Emmanuele Bassi [Tue, 15 Dec 2020 14:06:58 +0000 (14:06 +0000)]
docs: Add missing symbols to the GTK reference
Emmanuele Bassi [Tue, 15 Dec 2020 13:58:52 +0000 (13:58 +0000)]
Remove stray mentions of GdkConfigureEvent
The event was removed, but some traces of it linger.
Emmanuele Bassi [Tue, 15 Dec 2020 13:47:40 +0000 (13:47 +0000)]
docs: Add missing symbols to the GDK reference
Emmanuele Bassi [Tue, 15 Dec 2020 13:46:50 +0000 (13:46 +0000)]
Move private GdkX11 symbols out of a public header
This avoids private symbols showing up in the introspection data, as
well as in the undocumented symbols list when generating the GDK API
reference.
Emmanuele Bassi [Tue, 15 Dec 2020 13:35:19 +0000 (13:35 +0000)]
docs: Add missing symbols to the GSK reference
Emmanuele Bassi [Tue, 15 Dec 2020 13:28:27 +0000 (13:28 +0000)]
docs: Add more ignored header for GSK
Emmanuele Bassi [Tue, 15 Dec 2020 12:47:05 +0000 (12:47 +0000)]
build: Use Meson support for dylib versions
Do not hand-code it inside GTK's meson.build.
Emmanuele Bassi [Tue, 15 Dec 2020 12:31:38 +0000 (12:31 +0000)]
build: Use a consistent style for Meson files
Emmanuele Bassi [Tue, 15 Dec 2020 11:47:32 +0000 (11:47 +0000)]
build: Remove duplicate definition
The `GTK_COMPILATION` symbol is defined in gir_args.
Emmanuele Bassi [Tue, 15 Dec 2020 11:36:20 +0000 (11:36 +0000)]
build: Remove linker flags from static libraries
We only need hardening linker flags on the libgtk shared library;
internal static libraries don't really need them.
Emmanuele Bassi [Tue, 15 Dec 2020 11:35:27 +0000 (11:35 +0000)]
build: Remove unused variable
We don't need a `gsk_source` variable after all.
Emmanuele Bassi [Tue, 15 Dec 2020 11:20:19 +0000 (11:20 +0000)]
build: Remove unused backend_immodules variable
We don't have input method modules any more.
Emmanuele Bassi [Tue, 15 Dec 2020 11:19:39 +0000 (11:19 +0000)]
build: Use get_supported_link_arguments()
Instead of hand-coding it ourselves, let Meson deal with linker
arguments discovery.
Daniel Mustieles [Tue, 15 Dec 2020 09:28:49 +0000 (10:28 +0100)]
Updated Spanish translation
Matthias Clasen [Mon, 14 Dec 2020 20:37:34 +0000 (20:37 +0000)]
Merge branch 'ebassi/for-master' into 'master'
docs: Add note for the removal of GtkFileChooserButton
See merge request GNOME/gtk!2954
Jordi Mas [Mon, 14 Dec 2020 17:39:00 +0000 (18:39 +0100)]
Update Catalan translation
Emmanuele Bassi [Mon, 14 Dec 2020 16:55:15 +0000 (16:55 +0000)]
docs: Add note for the removal of GtkFileChooserButton
Point developers in the direction of GtkButton and GtkFileChooserNative.
Emmanuele Bassi [Mon, 14 Dec 2020 15:12:56 +0000 (15:12 +0000)]
Merge branch 'pixbuf-from-surface-leak' into 'master'
gdkpixbuf-drawable: Free the pixbuf on Cairo error
See merge request GNOME/gtk!2951
Adrien Plazas [Mon, 14 Dec 2020 12:39:42 +0000 (13:39 +0100)]
gdkpixbuf-drawable: Free the pixbuf on Cairo error
This avoids leaking the pixbuf.
Matthias Clasen [Mon, 14 Dec 2020 13:14:32 +0000 (13:14 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Avoid adding // to resource paths
Closes #3469
See merge request GNOME/gtk!2947
Jakub Steiner [Mon, 14 Dec 2020 09:39:38 +0000 (09:39 +0000)]
Merge branch 'dropdown-searchbar' into 'master'
dropdown: Improve search bar styling
See merge request GNOME/gtk!2948
Jakub Steiner [Mon, 14 Dec 2020 09:38:45 +0000 (09:38 +0000)]
Merge branch 'emoji-searchbar' into 'master'
Adwaita: Improve emoji picker styling
See merge request GNOME/gtk!2949
nana-4 [Sat, 12 Dec 2020 07:52:49 +0000 (16:52 +0900)]
Adwaita: Improve emoji picker styling
- Add borders around the main scrollable content, like most other
places.
- Set padding and spacing on .emoji-searchbar and .emoji-toolbar in a
more proper way.
- Remove unused button.emoji-section label styles.
nana-4 [Sat, 12 Dec 2020 07:32:27 +0000 (16:32 +0900)]
emojichooser: Add .emoji-searchbar style class
Similar to .emoji-toolbar, it would be nice to have this for styling.
nana-4 [Sat, 12 Dec 2020 06:30:01 +0000 (15:30 +0900)]
dropdown: Improve search bar styling
As per the mockup. See:
https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/master/dropdown-lists/dropdown-lists.png
Piotr Drąg [Sun, 13 Dec 2020 15:51:51 +0000 (16:51 +0100)]
Update Polish translation
Florentina Mușat [Sat, 12 Dec 2020 18:49:22 +0000 (18:49 +0000)]
Update Romanian translation
Matthias Clasen [Sat, 12 Dec 2020 02:51:05 +0000 (02:51 +0000)]
Merge branch 'wip/jimmac/button-shed' into 'master'
headerbar window controls & clean up flat button extend
Closes #3427
See merge request GNOME/gtk!2942
Matthias Clasen [Sat, 12 Dec 2020 02:47:54 +0000 (21:47 -0500)]
Avoid adding // to resource paths
The GResource machinery is not forgiving about this
sort of thing.
Fixes: #3469
Matthias Clasen [Sat, 12 Dec 2020 02:35:01 +0000 (02:35 +0000)]
Merge branch 'wip/carlosg/for-master' into 'master'
Wip/carlosg/for master
Closes #3461, #593, #3083, #3009, #3463, and #3426
See merge request GNOME/gtk!2945
Carlos Garnacho [Sat, 12 Dec 2020 00:36:16 +0000 (01:36 +0100)]
gdk/surface: Trigger motion check for next frame after thaw
This is a more reliable calling point than ::resume-events, and a
good one to schedule things so they happen on a frame clock in no
special phase (Thus still fixing the original issue at
80d4a08e30)
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3461
Carlos Garnacho [Sat, 12 Dec 2020 00:32:16 +0000 (01:32 +0100)]
gtk/window: Bring back L-shaped resize corners
These ended up square in the various refactors. Make them again L-shaped
by extending these along the edge being checked. This means we have to
check for corner positions in all edges, though.
Carlos Garnacho [Fri, 11 Dec 2020 23:40:12 +0000 (00:40 +0100)]
gtk/scrolledwindow: Handle full scroll sequences only
In order to do this, leverage smooth scroll handling into the capture
phase scroll controller, controlled by ::scroll-begin in the propagation
phase controller.
There's 2 cases here:
- A child widget handles scroll. The scrolled window does not get
::scroll-begin, the child widget handles the full scroll sequence.
- No child handles scroll, the scrolled window gets ::scroll-begin,
and transfers control of scrolling to the capture phase controller.
As scrolling is performed, the pointer may fall into scrollable children,
but the scrolled window will be capturing the scroll events, so these
won't be seen by the child widgets.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/593
Carlos Garnacho [Fri, 11 Dec 2020 23:37:12 +0000 (00:37 +0100)]
gtk/eventscrollerscroll: Handle smooth events in discrete controllers
We let smooth scroll events that don't trigger a ::scroll signal through.
This is unintended, these are handled, even if just accumulated.
This fixes cases like GtkSpinButton inside GtkScrolledWindow, where both
would handle events, until the GtkSpinButton eventually shifts away from
underneath the pointer.
Brought up at https://gitlab.gnome.org/GNOME/gtk/-/issues/593
Carlos Garnacho [Fri, 11 Dec 2020 22:13:00 +0000 (23:13 +0100)]
gtk/entrycompletion: Ensure to show first row when shown, not allocated
This code was here in gtk3 to cater for the completion window being
positioned. That was only to meant once as long as the completion window
was shown.
This doesn't work as well for gtk4, ::size-allocate gets propagated from
the toplevel, so happens much more often for the completion window, this
ends up with the completion position being reset to the first row
frequently.
Do this simply once when popping up the completion, instead.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3083
Carlos Garnacho [Fri, 11 Dec 2020 16:56:14 +0000 (17:56 +0100)]
gtk/treeview: Position editable widgets correctly wrt left border
The coordinates are already widget-local here, not transformed by the
adjustment positions. Using the adjustment value here ends up pushing
the entry far from the left border.
The correct minimum value here is 0, which matches the treeview left
border.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3009
Carlos Garnacho [Fri, 11 Dec 2020 15:59:07 +0000 (16:59 +0100)]
gtk/modelbutton: Handle unpaired releases
Let model buttons handle unpaired releases, these may happen indirectly
e.g. due to other child menus being opened at the time. Clicking would
dismiss the menu, but the menu item beneath the pointer would not get
activated.
We can handle that button release though via ::unpaired-release, so
there's no second click required.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3463
Carlos Garnacho [Fri, 11 Dec 2020 15:22:26 +0000 (16:22 +0100)]
gtk/range: Move button release handling to GtkGestureDrag
Tracking it through the GtkGestureClick becomes a bit cumbersome for
handling of simultaneously pressed buttons. We can track ::stopped,
but that also emits for a number of situations where we want drag to
continue.
However, the GtkGestureDrag is grouped with the click gesture, and
knows better when to finish the drag gesture (not just because of a
button release), so hook drag and zoom mode finalization there.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3426
Emmanuele Bassi [Sat, 12 Dec 2020 00:01:38 +0000 (00:01 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master
See merge request GNOME/gtk!2944
Emmanuele Bassi [Fri, 11 Dec 2020 23:42:25 +0000 (23:42 +0000)]
Update CODEOWNERS
Add me as the reference for the accessibility bits of the code base.
Emmanuele Bassi [Fri, 11 Dec 2020 23:41:51 +0000 (23:41 +0000)]
docs: Fix the Widget as Buildable example
The layout properties use an old name.
Kjartan Maraas [Fri, 11 Dec 2020 11:40:55 +0000 (11:40 +0000)]
Update Norwegian Bokmål translation
Florentina Mușat [Thu, 10 Dec 2020 15:34:51 +0000 (15:34 +0000)]
Update Romanian translation
Matthias Clasen [Thu, 10 Dec 2020 14:31:54 +0000 (14:31 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
docs: Update references to GtkWindow:fullscreened
See merge request GNOME/gtk!2943
Matthias Clasen [Thu, 10 Dec 2020 14:10:21 +0000 (09:10 -0500)]
docs: Update references to GtkWindow:fullscreened
The property got renamed from fullscreen to fullscreened.
Update all references.
Jakub Steiner [Thu, 10 Dec 2020 13:24:29 +0000 (14:24 +0100)]
Adwaita: special case flat headerbar buttons
- make sure the hovers and pushed states are legible on a tintend headerbar
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3427
Jakub Steiner [Thu, 10 Dec 2020 13:16:25 +0000 (14:16 +0100)]
Adwaita: flat button :hover and :active
- special case undecorated button hovers
Jakub Steiner [Thu, 10 Dec 2020 12:58:42 +0000 (13:58 +0100)]
Adwaita: headerbar_color > headerbar_bg_color
- semantic correction
Jakub Steiner [Thu, 10 Dec 2020 12:51:10 +0000 (13:51 +0100)]
Adwaita: duplicate selector
- awkward duplicate selector that should have no effect
(resulting in the same css)
Luna Jernberg [Wed, 9 Dec 2020 21:05:25 +0000 (21:05 +0000)]
Update Swedish translation
Matthias Clasen [Wed, 9 Dec 2020 16:32:09 +0000 (16:32 +0000)]
Merge branch 'ebassi/popcount' into 'master'
Share the popcount() fallback for MSVC
See merge request GNOME/gtk!2940
Matthias Clasen [Wed, 9 Dec 2020 16:10:04 +0000 (16:10 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Remove NoDisplay from demo desktop files
Closes #2932
See merge request GNOME/gtk!2939
Emmanuele Bassi [Wed, 9 Dec 2020 15:48:09 +0000 (15:48 +0000)]
Share the popcount() fallback for MSVC
We use __builtin_popcount() in a couple of places, so it makes sense to
have it in one header.
Matthias Clasen [Wed, 9 Dec 2020 15:52:55 +0000 (10:52 -0500)]
widget-factory: Autoplay the video
The empty video on the frontpage is a bit of a letdown, since
the big arrow can't be clicked.
Matthias Clasen [Wed, 9 Dec 2020 15:05:54 +0000 (10:05 -0500)]
Remove NoDisplay from demo desktop files
When these are installed (in particular, as flatpaks),
we should not hide them.
Fixes: #2932
Matthias Clasen [Wed, 9 Dec 2020 15:04:01 +0000 (15:04 +0000)]
Merge branch 'wip/carlosg/for-master' into 'master'
Wip/carlosg/for master
Closes #3426 and #3264
See merge request GNOME/gtk!2933
Matthias Clasen [Wed, 9 Dec 2020 13:35:54 +0000 (13:35 +0000)]
Merge branch 'wip/jimmac/row-transitions-and-spacing' into 'master'
Adwaita: row transitions and spacing
Closes #3434
See merge request GNOME/gtk!2937
Matthias Clasen [Wed, 9 Dec 2020 13:34:21 +0000 (13:34 +0000)]
Merge branch 'wip/baedert/for-master' into 'master'
Wip/baedert/for master
Closes #3431
See merge request GNOME/gtk!2938
Matthias Clasen [Wed, 9 Dec 2020 13:20:20 +0000 (13:20 +0000)]
Merge branch 'ebassi/4-0-abi-bump' into 'master'
Ebassi/4 0 abi bump
Closes #3392
See merge request GNOME/gtk!2883
Emmanuele Bassi [Mon, 23 Nov 2020 18:02:12 +0000 (18:02 +0000)]
build: Bump up the SONAME for GTK4
We released all the 3.9x development snapshots using:
libgtk-4.0.so.0.xxxx.y
which means that the 4.0.0 release of GTK will have a lower SONAME than
the snapshots. To avoid that, bump the SONAME to 1.xxxx.y.
Fixes: #3392
Emmanuele Bassi [Mon, 23 Nov 2020 17:58:43 +0000 (17:58 +0000)]
build: Tie interface age to the development cycle
We don't want to increase the interface age manually, because we're
going to end up forgetting about it.
Instead, we should tie it to the rest of the version:
- in stable (even minor) cycles, we don't add new API; the interface
age is the same as the micro version
- in unstable (odd minor) cycles, every new release might have new API,
or updates to newly added API; keep the interface age to 0
This removes one more manual thing to change during release, and keeps
us honest with our promise not to add symbols during stable cycles.
Emmanuele Bassi [Tue, 8 Dec 2020 17:37:46 +0000 (17:37 +0000)]
Prepare version macros for 4.0
Remove the 3.9x version macros, and ensure that we handle 4.0 as the
backstop for the minimum required version.
Jakub Steiner [Wed, 9 Dec 2020 10:52:49 +0000 (11:52 +0100)]
Adwaita: row transitions and spacing
- no fading out of row hovers. Many feel like it's a slow
refresh rather than intentional effect.
- give some margin to navigation lists
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3434
Yuri Chornoivan [Wed, 9 Dec 2020 07:08:51 +0000 (07:08 +0000)]
Update Ukrainian translation
Matthias Clasen [Wed, 9 Dec 2020 05:51:00 +0000 (05:51 +0000)]
Merge branch 'ebassi/prop-names' into 'master'
Ebassi/prop names
See merge request GNOME/gtk!2936
Matthias Clasen [Wed, 9 Dec 2020 00:53:10 +0000 (00:53 +0000)]
Merge branch 'sophie-h-master-patch-62064' into 'master'
gtk-demo: Remove potentially ableist metaphor
See merge request GNOME/gtk!2934
Matthias Clasen [Wed, 9 Dec 2020 00:52:53 +0000 (00:52 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
Closes #3451
See merge request GNOME/gtk!2935
Emmanuele Bassi [Wed, 9 Dec 2020 00:11:49 +0000 (00:11 +0000)]
Rename GtkWindow:fullscreen to :fullscreened
Having a property with the same name of a method makes some languages
which put properties and method names in the same flat namespace not
really happy about our choices. To avoid collisions, let's put the the
"fullscreen" property into the past, alongside the "maximized" property.
Emmanuele Bassi [Tue, 8 Dec 2020 23:49:45 +0000 (23:49 +0000)]
Fix the documentation for GtkWindow state properties
Drop the "don't write code that crashes" folksy bit; don't start
sentences with conjunctions; remove copy-pasted references to
"iconified" states; point to the corresponding property notification in
a consistent manner.
Matthias Clasen [Tue, 8 Dec 2020 22:50:14 +0000 (17:50 -0500)]
Mark flaky tests as flaky
We can't mark these as xfail, since it sometimes succeed.
Sophie Herold [Tue, 8 Dec 2020 23:02:03 +0000 (23:02 +0000)]
gtk-demo: Remove potentially ableist metaphor
Matthias Clasen [Sun, 6 Dec 2020 16:00:35 +0000 (11:00 -0500)]
Add bug reporting address to pot files
Fixes: #3451
Carlos Garnacho [Tue, 8 Dec 2020 22:13:50 +0000 (23:13 +0100)]
gtk/main: Keep implicit grab until all buttons are released
Currently, the implicit grab is broken on the first button release,
in the case of pressing multiple buttons simultaneously. This means
that we emit crossing events early, and the next button releases
are sent to the pointer focus widget instead.
Consider the implicit grab effective until all buttons are released,
and only unset the pointer implicit grab (and emit crossing events)
after there are no further buttons pressed. We do this by checking
event modifiers, given button release events do contain the modifiers
in effect at the time the event was generated, we have to look for
exactly one active button modifier.
Fixes weird pointer states after pressing multiple buttons on a
widget.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3426